package cn.school.demo.util

import cn.school.demo.pojo.Result
import okhttp3.MultipartBody
import retrofit2.Call
import retrofit2.http.*

interface HttpApi {

    /*===========发送验证码模块（只是发送不验证码手机号是否注册！）==============*/
    /*
   * 名称： 获取验证码(只是发验证码，无检测)
   * 参数： 手机号
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("/system/user/randomNumber")
    fun getCode(@FieldMap map: Map<String, String>): Call<Result>

    /*=========================登录模块=======================================*/
    /*
     * 名称：账号密码登录
     * 参数：Map<String，Any>类型，里面有账号、密码两个数据
     * 返回值：Result类
    */
    @FormUrlEncoded
    @POST("/system/user/loginIP")
    fun loginByPwd(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 手机号登录
   * 参数： 手机号
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("/system/user/loginByNumber")
    fun loginByPhone(@FieldMap map: Map<String, String>): Call<Result>

    /*=========================注册模块=======================================*/
    /*
    * 名称： 注册
    * 参数：User类
    * 返回值：Result类
    */
    @FormUrlEncoded
    @POST("/system/user/register")
    fun register(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*=========================忘记密码模块=======================================*/
    /*
    * 名称： 忘记密码验证
    * 参数：id、手机号
    * 返回值：Result类
    */
    @FormUrlEncoded
    @POST("/system/user/authentication")
    fun userDetection(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
    * 名称： 重置密码
    * 参数：id、手机号、密码、验证码
    * 返回值：Result类
    */
    @FormUrlEncoded
    @POST("/system/user/changePassword")
    fun resetPassword(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*=========================我的模块=======================================*/
    /*
    * 名称： 签到
    * 参数：id
    * 返回值：Result类
    */
    @FormUrlEncoded
    @POST("/system/integral-details/saveIntegral")
    fun userSign(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*==========================党史答题========================================*/
    /*
   * 名称： 党史答题
   * 参数：sfNumber、subjectTitle、topicName(此参数为专项独有)
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("/system/test/answerTest")
    fun getPartyHistoryAnswer(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
  * 名称： 党史答题专项列表
  * 参数：无
  * 返回值：Result类
  */
    @POST("/system/test/getSpecialList")
    fun getProfessionalList(): Call<Result>

    /*
    * 名称： 积分存入
    * 参数：map（用户id，类型，答题来源《可不填》，正确数量《可不填》）
    * 返回值：Result类
    */
    @FormUrlEncoded
    @POST("/system/integral-details/saveIntegral")
    fun saveAnswerIntegral(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*==========================设置爱好========================================*/
    /*
   * 名称： 保存用户爱好
   * 参数：sfNumber、loveList
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("/system/love/saveOwnHobby")
    fun saveUserLoveList(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 获取用户爱好
   * 参数：sfNumber
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("/system/love/ownHobby")
    fun getUserLoveList(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 获取全部爱好
   * 参数：无
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("/system/hobby/getAllHobby")
    fun getAllLoveList(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*==========================设置爱好========================================*/
    /*
    * 名称： 修改个人信息
    * 参数：user类
    * 返回值：Result类
    */
    @FormUrlEncoded
    @POST("/system/user/modifyUserInfo")
    fun editUserInfo(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*==========================历史相关========================================*/
    /*
   * 名称： 获得浏览列表
   * 参数：sfNumber
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/browse/userBrowseInfo")
    fun getUserBrowseInfo(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 删除浏览列表
   * 参数：sfNumber
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/browse/deleteBrowseInfo")
    fun deleteUserBrowseInfo(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 保存浏览历史
   * 参数：sfNumber、articleId
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/browse/saveBrowseInfo")
    fun saveBrowseInfo(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*==========================积分明细相关========================================*/
    /*
   * 名称： 获取全部积分明细
   * 参数：sfNumber
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/integral-details/ownIntegralDetails")
    fun getAllIntegralDetailsByUserId(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*==========================搜索相关========================================*/
    /*
   * 名称： 获得热搜榜列表
   * 参数：无
   * 返回值：Result类
   */
    @POST("system/article/topSearch")
    fun getTopSearchList(): Call<Result>

    /*
   * 名称： 搜索
   * 参数：search
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/article/searchArticle")
    fun getSearchedResultList(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*==========================收藏相关========================================*/
    /*
   * 名称： 获得收藏列表
   * 参数：sfNumber
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/collect/collectionInfo")
    fun getCollectList(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 删除收藏列表
   * 参数：List<Collect>
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/collect/batchCancellation")
    fun deleteCollectList(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 获取文章
   * 参数：collectId
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/collect/collectedArticles")
    fun getArticleByArticleId(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 获取指定标签的文章
   * 参数：hobbyName
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/a-hclassify/typeArticleInfo")
    fun getArticleByHobbyName(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*==========================文章界面相关========================================*/
    /*
   * 名称： 点赞
   * 参数：sfNumber ,articleId
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/fabulous/likeArticles")
    fun saveMyLikeByID(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 取消点赞
   * 参数：sfNumber ,articleId
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/fabulous/cancelLike")
    fun cancelMyLikeByID(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 获得文章的点赞、收藏信息
   * 参数：sfNumber ,articleId
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/user/isCF")
    fun getArticleInformation(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 收藏
   * 参数：sfNumber ,articleId
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/collect/saveCollectInfo")
    fun saveCollectById(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 取消收藏
   * 参数：sfNumber ,articleId
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/collect/cancelCollection")
    fun cancelCollectById(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 获取评论
   * 参数：page ,size, articleId
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/comment/commentInfo")
    fun getUserCommentById(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 保存评论
   * 参数：sfNumber ,commentContent, articleId
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/comment/saveCommentInfo")
    fun saveUserCommentById(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*==========================图片文件上传========================================*/
    /*
    * 名称： 图片文件上传
    * 参数：sfNumber、imageFile
    * 返回值：Result类
    */
    @Multipart
    @POST("system/user/uploadHeadPortrait")
    fun formUpload(@Query("sfNumber") sfNumber: Int, @Part params: MultipartBody.Part): Call<Result>

    /*==========================积分排行榜========================================*/
    /*
    * 名称： 获取总积分排行榜
    * 参数：sfNumber
    * 返回值：Result类
    */
    @FormUrlEncoded
    @POST("system/user/totalScoreboard")
    fun getTotalIntegralRanking(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
    * 名称： 获取年度积分排行榜
    * 参数：sfNumber
    * 返回值：Result类
    */
    @FormUrlEncoded
    @POST("system/user/yearScoreboard")
    fun getYearIntegralRanking(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*==========================分数排行榜========================================*/
    /*
    * 名称： 获取分数排行榜
    * 参数：signId
    * 返回值：Result类
    */
    @FormUrlEncoded
    @POST("system/user/answerRanking")
    fun getScoreRanking(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>


    /*
   * 名称： 获取指定文章
   * 参数：articleId
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/article/articleInfo")
    fun getArticleById(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 获取指定答卷
   * 参数：signId
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/subject/acquireSubject")
    fun getSubjectListById(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 获取可作答答卷
   * 参数：无
   * 返回值：Result类
   */
    @POST("system/subject/answerableQuestions")
    fun getSubjectListByTrueTime(): Call<Result>

    /*
   * 名称： 保存作答记录
   * 参数：Answer
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/answer/saveAnswer")
    fun saveAnswer(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 查看作答记录
   * 参数：sfNumber
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/answer/answerHistory")
    fun getAnswerHistory(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 保存文章点击量
   * 参数：articleId
   * 返回值：Result类
   */
    @FormUrlEncoded
    @POST("system/article/hits")
    fun saveArticleHitById(@FieldMap map: Map<String, @JvmSuppressWildcards Any>): Call<Result>

    /*
   * 名称： 获取轮播图信息
   * 参数：null
   * 返回值：Result类
   */
    @POST("system/article/rotationChartArticle")
    fun rotationChartArticle(): Call<Result>
}